/*
     基本数据结构定义，包括：
    · 一条数据记录Record
    · 索引节点IndexNode
    · B+树节点BPTreeNode
*/
#ifndef STRUCT_HEAD_DEFINE
#define STRUCT_HEAD_DEFINE

#include <stdint.h>

#define RECORD_LENGTH 100 // 每条记录属性个数
#define RECORD_SIZE_BYTE (sizeof(int64_t)*(RECORD_LENGTH+1)) // 每条记录存储空间大小
#define M 2 // B+树阶数
#define MAX_RESULT_NUM 10 // 返回结果最大数
#define MAX_RECORD_NUM 1000000 // 最大记录条数

// 单条注释结构
typedef struct Record {
    int64_t primaryKey; // 主键，即该记录的序号
    int64_t recordList[RECORD_LENGTH]; // 100个相同数据类型的属性按数组存储
} Record;

//索引节点结构
typedef struct IndexNode {
    int64_t primaryKey; // 主键
    int64_t value; // 属性值
} IndexNode;

//B+树节点结构
typedef struct BPTreeNode {
    IndexNode indexNodes[2 * M - 1]; // 关键字，即为索引节点
    struct BPTreeNode* childs[2 * M]; // 子节点数组
    int num; // 子节点数
    bool isLeaf;
    struct BPTreeNode* prev;
    struct BPTreeNode* next;
} BPTreeNode;


#endif // STRUCT_HEAD_DEFINE




